package com.hch.algorithm.recursion;

import org.springframework.stereotype.Component;

/**
 * 汉诺塔问题
 *
 * @author HeCongHui
 * @date 2022/7/4 19:32
 */
@Component
public class TowersOfHanoi {
    /**
     * @param n       盘子
     * @param fromPeg 源柱
     * @param toPeg   目的柱子
     * @param auxPeg  辅助柱子
     */
    public void moveTower(int n, char fromPeg, char toPeg, char auxPeg) {
        if (n == 1) {
            System.out.println("from peg" + fromPeg + " to peg" + toPeg);
        } else {
            //利用目的柱将源柱上的n-1个盘子移动到辅助柱
            moveTower(n - 1, fromPeg, auxPeg, toPeg);
            //将源柱的第n个盘子引动到目标柱上
            System.out.println("from peg" + fromPeg + " to peg" + toPeg);
            //利用源柱将辅助柱子上的n-1个盘子移动到目标柱上
            moveTower(n - 1, auxPeg, toPeg, fromPeg);
        }

    }
}
